diff --git a/gfx/skia/include/core/SkPostConfig.h b/gfx/skia/include/core/SkPostConfig.h
--- a/gfx/skia/include/core/SkPostConfig.h
+++ b/gfx/skia/include/core/SkPostConfig.h
@@ -277,19 +277,28 @@
 #endif
 
 //////////////////////////////////////////////////////////////////////
 
 #ifndef SK_OVERRIDE
 #if defined(_MSC_VER)
 #define SK_OVERRIDE override
 #elif defined(__clang__)
+#if __has_feature(cxx_override_control)
 // Some documentation suggests we should be using __attribute__((override)),
 // but it doesn't work.
 #define SK_OVERRIDE override
+#elif defined(__has_extension)
+#if __has_extension(cxx_override_control)
+#define SK_OVERRIDE override
+#endif
+#endif
+#ifndef SK_OVERRIDE
+#define SK_OVERRIDE
+#endif
 #else
 // Linux GCC ignores "__attribute__((override))" and rejects "override".
 #define SK_OVERRIDE
 #endif
 #endif
 
 //////////////////////////////////////////////////////////////////////
 
